function [stimuli,stimType]=stimulus_list(n_trials,type_stim)
% stimulus_list - List stimuli to be displayed

%cette fonction tire au hasard une image parmi la liste prédéfinie dans le fichier texte frame.dat.
%Elle prend en entrée le nombre n de tirages à effectuer
% Elle ressort une structure composée des n noms de fichiés tirés.
% attention, il doit y avoir le même nombre de fichiers des deux types.
% Pour type_stim='workingMem', il faut n_trials divisible par 8

%type_stim='emotion','perception' ou 'memory', ou 'workingMem'

switch type_stim
    case 'emotion'

        %[file_subject]=subject_info()
        files{1}={'csad5.bmp' , 'jjsad5.bmp',	'mosad5.bmp', 'pfsad5.bmp',	'swsad5.bmp'};
        files{2}={'chap3.bmp'  , 'jjhap5.bmp',	'mohap5.bmp' , 'pfhap5.bmp', 'swhap5.bmp'};

        %files{1}={load(frames_sad.txt)}
        %files{2}=load(frames_hap.txt);


        stimuli=[]; %structure contenant les noms des fichiers affichés tirage par tirage


        % premier tirage : happy ou sad ? Valeur 1 pour triste, 2 pour joyeux

        emotion=(rand(1,n_trials)<0.5) +1;
        f=length(find(emotion-1));
        % plutôt permuter l'ensemble des images cf randperm(n)

        % On veut qu'il y ait entre 2/5ème et 3/5ème de chaque catégorie.

        while f>3*n_trials/5 || f<2*n_trials/5
            disp('pas assez aléatoire');
            emotion=(rand(1,n_trials)<0.5) +1;
            f=length(find(emotion==1));
        end

        for j=4:n_trials

            if emotion(j)==2 & emotion(j-1)==2 & emotion(j-2)==2 & emotion(j-3)==2
                emotion(j)=1;
            elseif emotion(j)==1 & emotion(j-1)==1 & emotion(j-2)==1 & emotion(j-3)==1
                emotion(j)=2;
            end

        end

        % 2ème tirage : nombre entre 1 et n = nombre de l'image dans le vecteur H ou S

        m=length(files{1});
        r=ceil(m*rand(1,n_trials));

        for k=1:n_trials;

            stimuli=[stimuli,files{emotion(k)}(r(k))];

        end

        stimType=emotion % 1 pour triste, 2 pour joyeux


        %save file_subject emotion stimuli

    case 'sternbergfaces'

            % en entrée : nombre d'essais
            % Chaque essai est constitué de 4 images puis une cible identique ou non à l'une des 4 images.

            n_stim=5*n_trials	;

            % 3eme tirage : les 4 ou 5 images
            % 1er tirage : ça va être vrai ou pas : 1 pour vrai, 2 pour faux sur la première ligne ; numéro de la répétition sur la deuxième ligne.
            a=[ones(1,n_trials/2),2*ones(1,n_trials/2); zeros(1,n_trials/2),ones(1,n_trials/8),2*ones(1,n_trials/8),3*ones(1,n_trials/8),4*ones(1,n_trials/8)];
            stimType=a(:,randperm(n_trials))

            % 2eme tirage : position de la répétition (1 à 4)
            %b=[ones(1,n_trials/8),2*ones(1,n_trials/8),ones(1,n_trials/8),4*ones(1,n_trials/8)]
            %whichRep=randperm(b) % 1 si la 1ère image est la cible... 4 si la 4ème est la cible.

            %stimType=zeros(1,n_trials); % vecteur des types de stimuli : vaudra 1 pour un visage, 2 pour une maison.

            % 5 images de chaque

            files{1}={'fn378g.bmp', 'fn422g.bmp', 'fn504g.bmp', 'fn610g.bmp', 'fn900g.bmp', 'fn236g.bmp', 'fn383g.bmp', 'fn427g.bmp', 'fn601g.bmp', 'fn611g.bmp', 'fn901g.bmp', 'fn370g.bmp', 'fn401g.bmp', 'fn429g.bmp', 'fn606g.bmp', 'fn705g.bmp', 'fn980g.bmp', 'fn371g.bmp', 'fn413g.bmp', 'fn500g.bmp', 'fn607g.bmp', 'fn707g.bmp', 'fp758g.bmp', 'fn372g.bmp', 'fn418g.bmp', 'fn501g.bmp', 'fn608g.bmp'  ,'fn752g.bmp', 'fn373g.bmp', 'fn421g.bmp', 'fn502g.bmp', 'fn609g.bmp', 'fn753g.bmp'};

			files{2}={'mn370g.bmp', 'mn377g.bmp', 'mn606g.bmp', 'mn615g.bmp', 'mn625g.bmp', 'mn766g.bmp', 'mn371g.bmp', 'mn402g.bmp', 'mn610g.bmp', 'mn616g.bmp', 'mn626g.bmp', 'mn767g.bmp', 'mn372g.bmp', 'mn403g.bmp', 'mn611g.bmp', 'mn617g.bmp', 'mn753g.bmp', 'mn800g.bmp', 'mn373g.bmp', 'mn405g.bmp', 'mn612g.bmp', 'mn620g.bmp', 'mn761g.bmp', 'mn858g.bmp', 'mn374g.bmp', 'mn406g.bmp', 'mn613g.bmp',  'mn621g.bmp', 'mn763g.bmp', 'mn376g.bmp', 'mn600g.bmp', 'mn614g.bmp', 'mn623g.bmp', 'mn765g.bmp'};

            %files{3}={'wb003g.bmp',	'wb005g.bmp', 'wb010g.bmp',	'wb011g.bmp', 'wb018g.bmp', 'wb035g.bmp', 'wb066g.bmp', 'wb098g.bmp', 'wb158g.bmp', 'wb021g.bmp', 'wb047g.bmp', 'wb070g.bmp', 'wb116g.bmp', 'wb165g.bmp', 'wb023g.bmp', 'wb052g.bmp', 'wb071g.bmp', 'wb119g.bmp', 'wb604g.bmp', 'wb027g.bmp', 'wb058g.bmp', 'wb074g.bmp', 'wb139g.bmp', 'wb605g.bmp', 'wb028g.bmp', 'wb059g.bmp', 'wb076g.bmp', 'wb142g.bmp', 'wb017g.bmp', 'wb033g.bmp', 'wb064g.bmp', 'wb085g.bmp', 'wb152g.bmp'};

            nFiles1=length(files{1});
            nFiles2=length(files{2});
			%nFiles3=length(files{3});

            %structure contenant les noms des fichiers affichés tirage par tirage
			%list_files = [files{1}(randperm(nFiles1)),files{2}(randperm(nFiles2)),files{3}(randperm(nFiles3))];
			%list_files = list_files(randperm(nFiles1+nFiles2+nFiles3));
            
            list_files = [files{1}(randperm(nFiles1)),files{2}(randperm(nFiles2))];
			list_files = list_files(randperm(nFiles1+nFiles2))
            
            %On inverse des colonnes de sorte qu'il n'y ait pas plus de 4 fois la même réponse d'affilé
            for j=4:length(stimType)-1

                if stimType(1,j)==2 & stimType(1,j-1)==2 & stimType(1,j-2)==2 & stimType(1,j-3)==2
                    r=stimType(:,j);
                    stimType(:,j)=stimType(:,j+1);
                    stimType(:,j+1)=r;
                elseif stimType(1,j)==1 & stimType(1,j-1)==1 & stimType(1,j-2)==1 & stimType(1,j-3)==1
                    r=stimType(:,j);
                    stimType(:,j)=stimType(:,j+1);
                    stimType(:,j+1)=r;
                end

            end
            
            lf=length(list_files);
        	number=1;
        	while number<=lf-9
        	
        		for n=1:n_trials
		        	stimType(2,n);
		        	if stimType(2,n)==0
		        		stimuli{n}=list_files(number:number+4);
		        		if number <=lf-9
		        			number=number+5;
		        		else
		        			break
		        		end	
		        	elseif 	stimType(2,n)==1
		        		stimuli{n}=[list_files(number:number+3),list_files(number)];
		        		if number <=lf-8
		        			number=number+4;
		        		else
		        			break
		        		end	
		        	elseif 	stimType(2,n)==2
		        		stimuli{n}=[list_files(number:number+3),list_files(number+1)];
		        		if number <=lf-8
		        			number=number+4;
		        		else
		        			break
		        		end	
		        	elseif 	stimType(2,n)==3
		        		stimuli{n}=[list_files(number:number+3),list_files(number+2)];
		        		if number <=lf-8
		        			number=number+4;
		        		else
		        			break
		        		end	
		        	elseif 	stimType(2,n)==4
		        		stimuli{n}=[list_files(number:number+3),list_files(number+3)];
		        		if number <=lf-8
		        			number=number+4;
		        		else
		        			break 
		        		end	
		        	end	
		        end
			end						
		      
		   

	case 'baldassi'
        stimuli = [];
        stimType = []; 
        for i=1:n_trials;
            stimuli(i).angle = 90*rand*sign(rand-.5);
			stimuli(i).n = 6;
		end

end
